﻿// Copyright (c) 2006 Antu Corporation。 
// 创建人  ：LinJian
// 创建时间：2007年5月23日
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace Antu.Business.Controls
{
    /// <!--
    /// 功能描述  : 类似datagrid控件操作类
    /// 创建人  : LinJian
    /// 创建时间: 2007年5月23日
    /// -->
    public class Pager
    {
        //记录集
        private DataTable dtGloab;

        //默认当前页码
        private int nPageNow;

        //默认每页显示记录数
        private int nPageSize;

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="dtParam"></param>
        /// <param name="pageNow"></param>
        /// <param name="pageSize"></param>
        public Pager(DataTable dtParam, int pageNow, int pageSize)
        {
            dtGloab = dtParam;
            nPageNow = pageNow;
            nPageSize = pageSize;

            if (nPageNow < 1) nPageNow = 1;
            if (nPageSize < 1) nPageSize = 15;
        }

        /// <summary>
        /// 获取当前页的list
        /// </summary>
        public List<DataRow> CurrentPageList
        {
            get
            {
                int nIndexOfPage = nPageSize * (nPageNow-1);
                List<DataRow> lstDataRow = new List<DataRow>();

                for (int i = nIndexOfPage; i < nIndexOfPage+nPageSize; i++)
                {
                    if (i<RecordCount)
                    {
                        lstDataRow.Add(dtGloab.Rows[i]);
                    }
                }

                return lstDataRow;
            }
        }

        /// <summary>
        /// 获取页面总数
        /// </summary>
        public int PageCount
        {
            get
            {
                if (dtGloab.Rows.Count > 0)
                {
                    return dtGloab.Rows.Count / nPageSize + 1;
                }
                else
                {
                    return 0;
                }
            }
        }
        
        /// <summary>
        /// 获取记录总数
        /// </summary>
        public int RecordCount
        {
            get
            {
                return dtGloab.Rows.Count;
            }
        }

        /// <summary>
        /// 获取列名
        /// </summary>
        public string[] ColumnsName
        {
            get
            {
                string[] arrStrTemp = new string[dtGloab.Columns.Count];
                for (int i=0;i< dtGloab.Columns.Count;i++)
                {
                    arrStrTemp[i] = dtGloab.Columns[i].ColumnName;
                }

                return arrStrTemp;
            }
        }

        /// <summary>
        /// 获取当前页数
        /// </summary>
        /// <returns></returns>
        public int PageNow
        {
            get
            {
                return nPageNow;
            }
        }
        
        /// <summary>
        /// 获取每页的记录数
        /// </summary>
        public int EveryPageSize
        {
            get
            {
                return nPageSize;
            }
        }
    }
}
